<template>
  <div class="tabs-container">
    <a-tabs v-model:activeKey="activeKey" centered>
      <a-tab-pane key="1" tab="入侵物种">
        <div class="image-grid">
          <div v-for="(image, index) in tabImages" :key="index" class="image-item">
            <router-link :to="{ name: 'PageTwo', params: { id: image.id } }">
              <img class="w-[210px] h-[180px]" :src="image.src" />
            </router-link>
            <p class="image-caption">{{ image.alt }}</p>
          </div>
        </div>
        <router-link class="more-link" to="/popsci/directory">更多</router-link>
      </a-tab-pane>
    </a-tabs>

    <div v-if="loading" class="loading-container">
      <div class="loader"></div>
    </div>
  </div>
</template>

<script setup lang="ts">
import { ref, onMounted } from 'vue';
import { baseURL, getInvasiveSpeciesDirectoryAPI } from '../apis/homeAPI.js'; // Adjust the import path if necessary

const loading = ref(true);
const tabImages = ref([]);
const activeKey = ref('1');

const getHomeInvasiveSpecie = async () => {
  try {
    const res = await getInvasiveSpeciesDirectoryAPI();
    const { data } = res;
    // 只取前四个数据
    tabImages.value = data.map(item => {
      const imageUrl = item.attributes.image?.data?.attributes?.url;
      return {
        id: item.id,
        alt: item.attributes.ChineseName,
        src: imageUrl ? baseURL + `${imageUrl}` : 'default-image-url', // 提供默认图片 URL
      };
    }).slice(0, 4);
  } catch (error) {
    console.error('Error fetching data:', error);
  } finally {
    loading.value = false; // 数据加载完成后设置 loading 为 false
  }
};

onMounted(() => {
  getHomeInvasiveSpecie();
});
</script>

<style scoped>
.tabs-container {
  max-width: 1450px;
  margin: 20px auto;
  padding: 30px;
  background-color: white;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);
}

.image-grid {
  display: flex;
  justify-content: space-around; /* 平均分配图片 */
  align-items: center; /* 垂直居中 */
  flex-wrap: wrap; /* 允许换行 */
}

.image-item {
  margin: 10px;
  text-align: center; /* 使文字居中 */
}

.image-caption {
  margin-top: 5px; /* 图片和文字之间的间距 */
  color: #666; /* 设置文字颜色 */
  font-size: 16px; /* 设置文字大小 */
  font-weight: bold; /* 设置字体加粗 */
}

.more-link {
  float: right; /* 右对齐 */
  margin-right: 20px; /* 右边距 */
  color: #007bff; /* Bootstrap blue link color */
  display: inline-block;
  line-height: 30px; /* 根据实际情况调整垂直居中 */
}

/* 加载样式 */
.loading-container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 200px; /* 设置高度以使加载图标居中 */
}

.loader {
  border: 8px solid rgba(255, 255, 255, 0.3); /* 背景透明的边框 */
  border-top: 8px solid #3498db; /* 顶部颜色 */
  border-radius: 50%; /* 圆形 */
  width: 50px; /* 图标宽度 */
  height: 50px; /* 图标高度 */
  animation: spin 1s linear infinite; /* 旋转动画 */
}

/* 定义旋转动画 */
@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* 响应式样式 */
@media (max-width: 768px) {
  .image-item {
    flex: 1 1 100%; /* 移动端每行一列 */
  }

  .more-link {
    float: none; /* 移动端不右对齐 */
    text-align: center; /* 居中对齐 */
  }
}
</style>
